//! Startup OS-a

#include "postavke.h"
#include "ispis.h"
#include "razno.h"
#include "prekidi.h"

#include <programi.h>

/*!
 * Funkcija koja je pozvana odmah iz asemblerskog koda kod samog pocetka
 * bootanja.
 * \param magic Bootloader magicni broj
 * \param addr Adresa multiboot_info_t strukture
 */

void j_pocetak (unsigned long magic, unsigned long addr)
{
	/* inicijalizacija svega */

	j_ispis_inicijaliziraj();
	j_prekidi_inicijaliziraj();
	j_dozvoli_prekidanje();

	j_ispisi("<%s:%s:%s>\nSustav inicijaliziran!\n\n",
		AUTOR, PROJEKT, PLATFORMA);

	/* pokretanje "programa" */
	pozdrav_svima();
	
	testiraj_prekide();
	
	j_ispisi("\nDosao do kraja!\n");
}

void testiraj_prekide()
{
	int ID = 0;
	
	j_prekidi_postavi(ID, prihvat_prekida_1);
	j_prekidi_postavi(ID + 20, prihvat_prekida_1);
	j_prekidi_postavi(ID + 35, prihvat_prekida_1);
	j_prekidi_postavi(ID + 48, prihvat_prekida_1);
	j_prekidi_postavi(ID + 108, prihvat_prekida_1); //!!
	
	j_generiraj_prekid(ID);
	j_generiraj_prekid(ID + 20);
	j_generiraj_prekid(ID + 35);
	j_generiraj_prekid(ID + 48);
	j_generiraj_prekid(ID + 108); //!? :)

	j_generiraj_prekid(ID + 5);
}

void prihvat_prekida_1 (int id)
{
	j_ispisi("Obrada prekida %d (opis: %s)\n", id, arh_opis_prekida(id));
}